#include "lost-kingdom.h"

/*
 * hierin bevinden zich zowel inleesfuncties als
 * standaard utilities
 */

mens* leesSpelerGegevens(int type)
{
    mens* res;

    int data[3];
    int counter = 20;
    int kracht, geluk, snelheid;
    int x;
    bool tomuch = false;

    res = new mens(type);

    for(int i = 0; i < 3; i++)
    {
        if(tomuch == true)
        {
            tomuch = false;
            i--;
        }
        switch(i)
        {
        case 0:
			cout << "Geef de hoeveelheid kracht: ";
            break;

        case 1:
            cout << "Geef de hoeveelheid sneheid: ";
            break;

        case 2:
            cout << "Geef de hoeveelheid geluk: ";
            break;
        }
        leesIn(&x, true);
        if(x > counter)
        {
            cout << "Teveel" << endl;
            tomuch = true;
        }
        else
        {
            counter -= x;

            if(counter == 0)
            {
                break;
            }
            else
            {
                data[i] = x;
                cout << "Nog " << counter << " punten over" << endl;
            }
        }
    }

    res->addKracht(data[0]);
    res->addSnelheid(data[1]);
    res->addGeluk(data[2]);

    return res;

}
void leesNPCGegevens()
{
    //code
}

void leesIn(int* gegeven, bool natural)
{
    for(;;)

        if(cin >> *gegeven)
        {
            if(natural == true)
            {
                if(*gegeven  >= 0)
                {
                    break;
                }
                else goto ongeldig;
            }
            else break;
        }
        else
        {
ongeldig:
            cout << "Ongeldige invoer" << endl;
            cin.clear();
            cin.ignore(1000, '\n');
        }

}

char* textNaarBuffer(const char* filename)
{
	char* dummy;
	int filesize;
	int i;
	
	FILE* infile;
	infile = fopen(filename, "r");
	
	if(infile == NULL)
	{
		fprintf(stderr, "bestand kon niet geopend worden\n");
		return NULL;
	}
	
	fseek(infile, 0, SEEK_END);
	filesize = ftell(infile);
	dummy = (char*) malloc(filesize * sizeof(char));
	
	fseek(infile, 0, SEEK_SET);
	
	for(i = 0; i < filesize; i++)
	{
		dummy[i] = getc(infile);
	}
	return dummy;
}

void deGoedeFee(mens* speler)
{
	char keuze;
	bool gekozen = false;
	
	cout << "Je komt een lieve mooie fee tegen. je mag een eigenschap met 1 verhogen of je leven bijvullen tot het max (30)" << endl;
	cout << "Wat kies je?" << endl;
	cout << "L: leven bijvullen" << endl;
	cout << "K: Kracht met 1 verhogen" << endl;
	cout << "S: Snelheid met 1 verhogen" << endl;
	cout << "G: Geluk met 1 verhogen" << endl;
	while(gekozen == false)
	{
		if(cin >> keuze)
		{
			keuze = toupper(keuze);
	
			switch(keuze)
			{
				case 'L':
					speler->setLeven(30);
					gekozen = true;
					break;
				case 'K':
					speler->addKracht(1);
					gekozen = true;
					break;
				case 'S':
					speler->addSnelheid(1);
					gekozen = true;
					break;
				case 'G':
					speler->addGeluk(1);
					gekozen = true;
					break;
				default:
					cout << "ongeldig" << endl;
					cin.clear();
					cin.ignore(1000, '\n');
			}
		} else {
			cout << "ongeldig" << endl;
			cin.clear();
			cin.ignore(1000, '\n');
		}
	}
}

void deVal(mens* speler)
{	
	float nuleven = speler->getLeven();
	int straksleven;
	straksleven = nuleven - ((nuleven/100) * 20);
	speler->setLeven(straksleven);
	cout << "je loopt in een val je leven is verlaagd van " << nuleven << " naar " << straksleven << endl;
}

void randomGeld(mens* speler)
{
	int nugeld = speler->getGeld();
	int straksgeld;
	
	straksgeld = (rand() % 49) + 1;
	speler->addGeld(straksgeld);
	
	cout << "je vind een zak geld" << endl;
	cout << "je geld werd verhoogd van " << nugeld << " naar " << speler->getGeld() << endl;
}
void maakKeuze(mens* speler)
{
	char keuze;
	bool keuzegemaakt = false;
	int willekeurig;
	int kfunctie;
	int geluk;
	monster* vijhand;
	
	willekeurig = rand() % 100;
	kfunctie = rand() % 2;
	vijhand = new monster();
	
	cout << "Welke kant wilt u op gaan?" << endl;
	cout << "N: noord" << endl;
	cout << "O: oost" << endl;
	cout << "Z: zuid" << endl;
	cout << "W: west" << endl;
	
	while(keuzegemaakt == false)
	{
		if(cin >> keuze)
		{
			keuze = toupper(keuze);
			switch(keuze)
			{
				// eigenlijk maakt de keuze die je maakt totaal niks uit maar dat weet de speler niet :p
				case 'N':
				case 'O':
				case 'Z':
				case 'W':
				{
					keuzegemaakt = true;
					
					if(geluk >= 7)
					{
						geluk = 80;
					} else {
						geluk = 40;
					}
					
					if(willekeurig < geluk)
					{
						if(kfunctie == 0)
						{
							deGoedeFee(speler);
						} else if(kfunctie == 1){
							randomGeld(speler);
						}
					} else {
						if(kfunctie == 0)
						{
							battle(speler, vijhand);
						} else if(kfunctie == 1){
							deVal(speler);
						}
					}
					
					break;
				}
				default:
					cout << "Ongeldige invoer" << endl;
					cin.clear();
					cin.ignore(1000, '\n');
			}
		} else {
			cout << "ongeldige invoer" << endl;
			cin.clear();
			cin.ignore(1000, '\n');
		}
	}
	
	delete vijhand;
}
